package udp;

import java.io.IOException;
import java.net.*;

/**
 * @author xingzhiwen
 * @date 2021/9/15
 * @ddescription: udp接收端
 */
public class UDPReceiverA {
    public static void main(String[] args) throws IOException {
        //创建一个datagramsocket
        DatagramSocket socket = new DatagramSocket(9999);
        //构建一个datagrampacket准备接受数据
        // udp一个数据包64k，不适合传输大量数据
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        //调用接受方法
        // 当有数据包发送到9999时候，就会接收数据，如果数据包没有发送到9999时，就会阻塞
        System.out.println("等待。。。。");
        socket.receive(packet);

        //把packet进行拆包，去除数据并显示
        int length = packet.getLength();//实际收到数据字节长度
        byte[] data = packet.getData();
        String s = new String(data, 0, length);
        System.out.println(s);

        //=======回复信息给B
        //将需要发送的数据，封装到
        data = "收到信息，明天准时".getBytes();
        //说明：封装的datagrampacket对象data，内容字节数组，datalength， 主机ip 端口
        packet = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.111.1"), 9998);
        socket.send(packet);
        socket.close();
        System.out.println("A端退出");

    }
}
